package com.yike.user.service;

import com.yike.user.entity.Agent;
import com.yike.user.param.*;
import com.yike.common.base.BaseService;
import com.yike.common.pagination.Paging;
import com.yike.user.vo.*;

import java.util.List;

/**
 * 代理商表 服务类
 *
 * @author Sakura
 * @since 2024-08-26
 */
public interface AgentService extends BaseService<Agent> {

    /**
     * 保存
     *
     * @param addAgentParam
     * @return
     * @throws Exception
     */
    boolean saveAgent(AddAgentParam addAgentParam) throws Exception;

    /**
     * 设置代理商
     *
     * @param setAgentParam
     * @return
     * @throws Exception
     */
    boolean setAgent(SetAgentParam setAgentParam) throws Exception;

    /**
     * 修改代理商
     *
     * @param updateAgentParam
     * @return
     * @throws Exception
     */
    boolean updateAgent(UpdateAgentParam updateAgentParam) throws Exception;

    /**
     * 删除
     *
     * @param agentNo
     * @return
     * @throws Exception
     */
    boolean deleteAgent(String agentNo) throws Exception;

    /**
     * @description: 代理商详情
     * @param agentNo
     * @return [java.lang.String]
     */
    AgentVo getAgent(String agentNo) throws Exception;


    /**
     * 获取分页对象
     *
     * @param agentPageParam
     * @return
     * @throws Exception
     */
    Paging<AgentVo> getAgentPageList(AgentPageParam agentPageParam) throws Exception;

    /**
     * 获取分页对象
     *
     * @param subAgentPageParam
     * @return
     * @throws Exception
     */
    Paging<AgentVo> getSubAgentList(SubAgentPageParam subAgentPageParam) throws Exception;

    AgentDataStatisticsVo getAgentDataStatistics(AgentDataStatisticsParam agentDataStatisticsParam) throws Exception;

    List<AgentColumnarDataStatisticsVo> getAgentColumnarDataStatistics(AgentColumnarDataStatisticsParam agentColumnarDataStatisticsParam) throws Exception;

    List<AgentSearchDataVo> getAgentSearchData(AgentSearchDataParam agentSearchDataParam) throws Exception;

    List<AgentSearchListVo> getAgentSearchList(AgentSearchListParam agentSearchListParam) throws Exception;

    AgentDateStatisticsVo getAgentDateStatistics(AgentSearchListParam agentSearchListParam) throws Exception;

}
